clc; clear; close all;

%% 参数设置
c_values = linspace(1.2, 1.84, 500);  % 参数c的范围（对应论文中的TO-GM映射）
N_iter   = 1000;           % 总迭代步数
Transient= 200;            % 瞬态步数
KeepNum  = 500;            % 分岔图记录步数
x0 = 0.5;            % 初始条件x0（论文中TO-GM的初始状态）
phi0 = -1;           % 初始条件phi0（论文中TO-GM的初始状态）

%% 预分配内存
bifurcation = zeros(length(c_values), KeepNum);
LE1_values = zeros(1, length(c_values));
LE2_values = zeros(1, length(c_values));

%% 主循环：遍历每个c值
for i = 1:length(c_values)
    c = c_values(i);
    % 计算Lyapunov指数和分岔数据
    [LE1, LE2, xStore] = LE(@TOGM, c, x0, phi0, N_iter, Transient, KeepNum);
    % 存储结果
    bifurcation(i, :) = xStore;
    LE1_values(i) = LE1;
    LE2_values(i) = LE2;
    fprintf('Progress: %.2f%%\n', i/length(c_values)*100);
end

%% 绘制Lyapunov指数
% 子图1: 李雅普诺夫指数
subplot(2,1,1); hold on; box on; grid on;
plot(c_values, LE1_values, 'r-', 'LineWidth', 1.5);
plot(c_values, LE2_values, 'b-', 'LineWidth', 1.5);
plot(c_values, zeros(size(c_values)), 'k--', 'LineWidth', 1.2);
xlabel('Coupling strength $c$', 'Interpreter', 'latex');
ylabel('Lyapunov Exponents');
legend('$\lambda_1$', '$\lambda_2$', 'Interpreter', 'latex');
title('Lyapunov Exponents of TO-GM Map');
xlim([1.2, 1.84]);
set(gca, 'FontSize', 12);
grid on;


%% 绘制分岔图
% 子图2: 分岔图
subplot(2,1,2); hold on; box on; grid on;
for i = 1:length(c_values)
    plot(c_values(i)*ones(1, KeepNum), bifurcation(i, :), '.', ...
        'MarkerSize', 1, 'Color', [0.2 0.2 0.8]);
end
xlabel('Coupling strength $c$', 'Interpreter', 'latex');
ylabel('$x$', 'Interpreter', 'latex');
title(' TO-GM 模型分岔图');
xlim([1.2, 1.84]);
set(gca, 'FontSize', 12);